/**
 * 初始化页面
 * 初始化产品菜单
 */
$(function () {
    $.ajax({
        type: 'get',
        url: requestURL+prefix+productService+"/productMenu/findAll",
        headers: {"Authorization":authToken},
        data: {'page': -1, 'limit': -1},
        success: function (data) {
            // console.log(data);
            // 判断是否具有节点
            if (data.total > 0) {
                setData(data);
                return false;
            }
            layui.layer.msg('暂无产品菜单！',{icon:0,time:1200});
            return false;
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            var state = XMLHttpRequest.status;
            if (state == 403) {
                layui.layer.msg('权限不足，请联系超级管理员！', {icon: 0, time: 1200});
                return false;
            }
            layui.layer.msg('请求接口异常！', {icon: 0, time: 1200});
            return false;
        }
    });
});


/**
 * Layui延迟执行操作
 */
function layuiUse() {

    layui.use(['form', 'layer', 'upload','element','laydate', 'jquery','layedit'], function () {
        $ = layui.jquery;
        var form = layui.form;
        var upload = layui.upload,element = layui.element;
        var layer = layui.layer;
        var layedit = layui.layedit;

        /**
         * 图片上传
         */
            //常规使用 - 普通图片上传
        var uploadInst = upload.render({
                elem: '#test1'
                ,url: requestURL+prefix+uploadService+'/upload/uploadImage' //改成您自己的上传接口
                ,headers: {"Authorization":authToken}
                ,method: 'post' //默认post
                ,before: function(obj){
                    //预读本地文件示例，不支持ie8
                    obj.preview(function(index, file, result){
                        $('#demo1').attr('src', result); //图片链接（base64）
                        $('#demoText').html(file.name);
                        sessionStorage.setItem("fileName",file.name);
                    });

                    element.progress('demo', '0%'); //进度条复位
                    layer.msg('上传中', {icon: 16, time: 0});
                }
                ,done: function(res){
                    //如果上传失败
                    if(res.code > 0){
                        return layer.msg('上传失败');
                    }
                    //上传成功的一些操作
                    //……
                    var fileName = sessionStorage.getItem("fileName");
                    $('#demoText').html(fileName);//回显图片名称
                    // 将图片链接保存到表单隐藏域
                    $('#L_img').val(res.data.src);
                    // console.log(res);
                }
                ,error: function(){
                    //演示失败状态，并实现重传
                    var demoText = $('#demoText');
                    demoText.html('<span style="color: #ff5722;">上传失败</span> <a class="layui-btn layui-btn-xs demo-reload">重试</a>');
                    demoText.find('.demo-reload').on('click', function(){
                        uploadInst.upload();
                    });
                }
                //进度条
                ,progress: function(n, elem, e){
                    element.progress('demo', n + '%'); //可配合 layui 进度条元素使用
                    if(n == 100){
                        layer.msg('上传完毕', {icon: 1,time:1200});
                    }
                }
            });


        //注意：layedit.set 一定要放在 build 前面，否则配置全局接口将无效。 上传图片
        layedit.set({
            uploadImage: {
                url: requestURL+prefix+uploadService+'/upload/uploadImage' //接口url
                ,headers: {"Authorization":authToken}
                ,type: 'post' //默认post
            }
        });
        var index = layedit.build('content',{
            height:360,
        }); //建立编辑器

        //自定义验证规则
        form.verify({
            content: function(value) {
                return layedit.sync(index);
            }
        });

        /**
         * 初始化页面
         * 通过Id查询所属产品详情
         */
        var id = sessionStorage.getItem("id");
        // console.log("id="+id);
        if (id == null) {
            return false;
        }
        $.ajax({
            type: 'get',
            url: requestURL+prefix+productService+"/product/findById/"+id,
            headers: {"Authorization":authToken},
            success: function (data) {
                if (data.status == 200) {
                    let {id,img,name,detail,marketPrice,platformPrice,tMenuId} = data.object;
                    $("#L_id").val(id);
                    $("#L_img").val(img);
                    $("#L_name").val(name);
                    $("#marketPrice").val(marketPrice);
                    $("#platformPrice").val(platformPrice);
                    // 图片回显
                    $('#demo1').attr('src',img); //图片链接（base64）
                    //下拉框子类型动态选定
                    // console.log("下拉框值："+tMenuId);
                    let res = getData();
                    if (res.total > 0) {
                        $(res.list).each(function (index, item) {
                            // 递归查询类型判断是否选中
                            resultData(item,tMenuId);
                        });
                    }
                    // 执行会报JS错误，放末尾执行
                    layedit.setContent(index,detail);
                    return false;
                }
                layer.msg('信息获取失败，请稍后重试！',{icon:0,time:1200});
                return false;
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                var state = XMLHttpRequest.status;
                if (state == 403) {
                    layui.layer.msg('权限不足，请联系超级管理员！', {icon: 0, time: 1200});
                    return false;
                }
                layui.layer.msg('请求接口异常！', {icon: 0, time: 1200});
                return false;
            }
        })

        //监听提交 修改产品信息
        form.on('submit(add)', function (data) {

            // console.log(data.field);
            //发异步，把数据提交给Java
            $.ajax({
                type: 'post',
                url: requestURL+prefix+productService+'/product/updateMessage',
                headers: {"Authorization":authToken},
                data: JSON.stringify(data.field),
                contentType: 'application/json;charset=utf-8',
                dataType: 'json',
                success: function (res) {
                    if (res.status == 200) {
                        $("#sumbit").attr("disabled",true); //禁止点击按钮
                        layer.msg('更新成功！', {icon: 1, time: 1100,end:function () {
                                // 可以对父窗口进行刷新
                                xadmin.father_reload();
                            }});
                        return false;
                    }
                    layer.msg('更新失败！', {icon: 2, time: 1200});
                    return false;
                },
                error: function (XMLHttpRequest, textStatus, errorThrown) {
                    var state = XMLHttpRequest.status;
                    if (state == 403) {
                        layui.layer.msg('权限不足，请联系超级管理员！', {icon: 0, time: 1200});
                        return false;
                    }
                    layui.layer.msg('请求接口异常！', {icon: 0, time: 1200});
                    return false;
                }
            });
            return false;
        });

    });

}

/**
 * 由于上个请求没完就开始了
 * 200毫秒之后执行Layui操作
 */
setTimeout(function () {
    layuiUse();
},300);

/**
 * 产品重置修改表单信息
 * 相当于重新发送请求，获取所有产品菜单
 */
function resetProductForm() {
    $.ajax({
        type: 'get',
        url: requestURL+prefix+productService+"/productMenu/findAll",
        headers: {"Authorization":authToken},
        data: {'page': -1, 'limit': -1},
        success: function (data) {
            // console.log(data);
            // 判断是否具有节点
            if (data.total > 0) {
                setData(data);
                return false;
            }
            layui.layer.msg('暂无产品类型！',{icon:0,time:1200});
            return false;
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            var state = XMLHttpRequest.status;
            if (state == 403) {
                layui.layer.msg('权限不足，请联系超级管理员！', {icon: 0, time: 1200});
                return false;
            }
            layui.layer.msg('请求接口异常！', {icon: 0, time: 1200});
            return false;
        }
    });

    /**
     * 由于上个请求没完就开始了
     * 200毫秒之后执行Layui操作
     */
    setTimeout(function () {
        layuiUse();
    },300);

}

/**
 * 递归实现
 * JSON页面数据渲染
 * @param data
 */
function resultData(item,tMenuId) {
    // 子级类型
    if (item.productMenus.length > 0) {
        $(item.productMenus).each(function (index, item) {
            if (tMenuId == item.id) {
                let type2 = "<option value=\""+item.id+"\" selected='selected'>"+item.name+"</option>\n";
                $("#productType2").append(type2);
                layui.form.render();
            } else {
                let type = "<option value=\"" + item.id + "\">" + item.name + "</option>\n";
                $("#productType2").append(type);
                layui.form.render('select'); // 渲染有效，去掉Layui自身渲染
                resultData(item,tMenuId);
            }
        })
    }
}

/**
 * 将异步获取的下拉框数据进行赋值
 * @param data
 * @returns {*}
 */
let selectData;
function setData(data) {
    selectData = data;
}

/**
 * 获取下拉框Data
 * @returns {*}
 */
function getData() {
    return selectData;
}